﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include<iostream>
//using namespace std;
//typedef int STDataType;
//class Stack
//{
//public:
//	// 全缺省的默认构造函数
//	Stack(int n = 4)
//	{
//		_a = (STDataType*)malloc(sizeof(STDataType) * n);
//		if (nullptr == _a)
//		{
//			perror("malloc申请空间失败");
//				return;
//		}
//		_capacity = n;
//		_top = 0;
//	}
//	// ...
//private:
//	STDataType* _a;
//	size_t _capacity;
//	size_t _top;
//};
//
//
//// 两个Stack实现一个队列
//class MyQueue
//{
//public:
//	//编译器默认⽣成MyQueue的构造函数调⽤了Stack类的全缺省的构造函数，完成了两个成员的初始化
//private:
//	Stack pushst;
//	Stack popst;
//};
//
//
//int main()
//{
//	MyQueue mq;
//	return 0;
//}




//#include<iostream>
//using namespace std;
//class Date
//{
//public:
//	// 无参的构造函数
//	Date()
//	{
//		_year = 1;
//		_month = 1;
//		_day = 1;
//	}
//	// 2.
//	Date(int year=1, int month=1, int day=1)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//
//	void Print()
//	{
//		cout << _year << '/' << _month << '/' << _day << endl;
//	}
//
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//	Date d1;// 系统自动调用无参的构造函数
//	// Date d1();// error：d1重定义了。
//	/*
//
//	编译器可能以为写的是函数的声明，函数的返回值是Date类型，函数名是d1，没有形参。
//	同时d1还是对象的名字。
//	因此d1重定义了
//
//	*/
//	d1.Print();
//
//
//	Date d2(2025, 9, 29);// 系统自动调用带参的构造函数
//	d2.Print();
//	return 0;
//}



//#include<iostream>
//using namespace std;
//typedef int STDataType;
//class Stack
//{
//public:
//	Stack(int n = 4)
//	{
//		_a = (STDataType*)malloc(sizeof(STDataType) * n);
//		if (nullptr == _a)
//		{
//			perror("malloc申请空间失败");
//				return;
//		}
//		_capacity = n;
//		_top = 0;
//	}
//
//	~Stack()
//	{
//		cout << "~Stack()" << endl;
//		free(_a);
//		_a = nullptr;
//		_top = _capacity = 0;
//	}
//private:
//	STDataType* _a;
//	size_t _capacity;
//	size_t _top;
//};
//
//
//// 两个Stack实现一个队列
//class MyQueue
//{
//public:
//	//编译器默认⽣成MyQueue的析构函数调⽤了Stack类的析构函数，释放了MyQueue实例化的对象中的资源
//	 // 显⽰写析构，也会⾃动调⽤Stack的析构
//	  /*
//	  ~MyQueue()
//	  {
//	  }
//	*/
//private:
//	Stack pushst;
//	Stack popst;
//};
//int main()
//{
//	Stack st;
//	MyQueue mq;
//	return 0;
//}

